package net.xdclass.onlinexdclass.health;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;

/**
 * 创建一个自定义的健康目标
 * /health endpoint
 * health endpoint通过合并几个健康指数检查应用的健康情况。
 *
 * Spring Boot Actuator有几个预定义的健康指标比如DataSourceHealthIndicator, DiskSpaceHealthIndicator, MongoHealthIndicator, RedisHealthIndicator, CassandraHealthIndicator等。它使用这些健康指标作为健康检查的一部分。
 *
 * 举个例子，如果你的应用使用Redis，RedisHealthindicator将被当作检查的一部分。如果使用MongoDB，那么MongoHealthIndicator将被当作检查的一部分。
 */
@Component
public class CustomeHealthIndicator extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        builder.up()
                .withDetail("app", "Alive and Kicking")
                .withDetail("error", "Nothing! I'm good.");

    }

    /**
     * 一旦你增加上面的健康指标到你的应用中去后，health endpoint将展示如下细节:
     *
     * {
     *    "status":"UP",
     *    "details":{
     *       "custom":{
     *          "status":"UP",
     *          "details":{
     *             "app":"Alive and Kicking",
     *             "error":"Nothing! I'm good."
     *          }
     *       },
     *       "diskSpace":{
     *          "status":"UP",
     *          "details":{
     *             "total":250790436864,
     *             "free":97949245440,
     *             "threshold":10485760
     *          }
     *       }
     *    }
     * }
     */
}


